perm filename SAY.OSA[SYS,ALS] blob sn#001161 filedate 1972-07-27 generic text, type T, neo UTF8
00010	BEGIN "SAY"
00020	DEFINE ⊂="COMMENT";  ⊂ 6/30/72 Runs SIG from FIX output;
00030	REQUIRE "COMSUB.HDR[SYS,ALS]" SOURCE_FILE;
00040	REQUIRE "SIG[SYS,ALS]" LOAD_MODULE;
00050	EXTERNAL FORTRAN PROCEDURE SIG(REFERENCE INTEGER P);
00070	REQUIRE "BLOCKS.HDR[SYS,THO]" SOURCE_FILE;
00120	SAFE INTEGER ARRAY LFILE[0:'177];
00130	SAFE INTEGER ARRAY INDATA[0:768];
00160	INTERNAL INTEGER H,I,J,K,L,M,N,P,NF;
00170	INTERNAL INTEGER FLAG,TFLAG,UPCNT;
00180	INTERNAL INTEGER SEGC,INTOT,SEGTOT,HINT,BPT,INFLAG;
00190	INTEGER HINCNT,HCOUNT,HINDEX,EOF,EOFA,BRK;
00200	STRING PREHINT;
00210	INTEGER CHAN1,CHAN2,CHAN3,CHAN4,CHAN5;
00220	STRING READ1,FILEL,FILEI,TFILE,TFILEI,FILLST;
00230	LABEL START,ZZZZ,ZZZ,ZZ;
00240	DEFINE ⊂="COMMENT",CR="'15",LF="'12",TB="'11";
00250	DEFINE CRLF="CR&LF", CRLF0="CR&'177&'21"; ⊂ FOR CRLF W/O FORM FEED;
00260	
00270	STRING PROCEDURE HEADER;
00280	  BEGIN "HEADER"
00290	  STRING H1,H2; INTEGER I,J,K;
00300	  IF HCOUNT>0 THEN BEGIN HCOUNT←HCOUNT-1;
00305	   HINCNT←HINCNT+1; RETURN(PREHINT) END 
00310	  ELSE WHILE HCOUNT=0 DO BEGIN "XX"
00320	  I←LFILE[HINDEX];  K←LDB(POINT(7,I,30)); J←SEGC-K; 
00330	  IF I=0 THEN BEGIN PREHINT←"NU"; HCOUNT←99; RETURN(PREHINT) END;
00340	  IF J ≥ 0 THEN BEGIN "LATCH"
00345	   H1←CVXSTR(LDB(POINT(12,I,11)) LSH 24);
00350	   H2←CVXSTR(LDB(POINT(12,I,23)) LSH 24);
00360	   IF EQU(H1,H2) THEN BEGIN PREHINT←H1; HCOUNT←LDB(POINT(5,I,35));
00370	    HCOUNT←HCOUNT-J; HINDEX←HINDEX+1; HINCNT←HINCNT+1;
00375	    RETURN(PREHINT); DONE  END
00380	    ELSE BEGIN PREHINT←"NU"; HCOUNT←LDB(POINT(5,I,35));
00390	    HCOUNT←HCOUNT-J; HINDEX←HINDEX+1; RETURN(PREHINT); DONE; END;
00400	  END "LATCH";
00410	 PREHINT←"NU"; RETURN(PREHINT); END "XX";
00420	END "HEADER";
00430	STDBRK(1);
00432	SETBREAK(14,"∃",NULL,"INS");
00436	
00440	FILEL←"LIST1.L0";
00450	FILEI←"TOO1.DAT[1,THO]"; M←8; INFLAG←0;
00460	CHAN1←1; CHAN2←2; CHAN3←3;  CHAN4←4; CHAN5←5;
00470	TABIN(INTOT);
00660	
00670	IF (FILEI←STRIN("Data file list ("&FILEL&") = "))≠"" THEN
00675		 FILEL←FILEI;
00680	CLOSE(CHAN5); OPEN(CHAN5,"DSK",1,2,0,300,BRK,EOFA);
00690	LOOKUP(CHAN5,FILEL,1); EOFA←0;
00710	 M←8; N←2↑M;  NF←2*N;
00730	
00732	FILLST←INPUT(CHAN5,14); EOFA←0;
00734	
00740	START:
00750	WHILE EOFA=0 DO BEGIN "LISTREAD"
00760	HINDEX←21; HCOUNT←HINCNT←0;
00770	FILEI←SCAN(FILLST,1,J);
00870	IF FILEI="" THEN DONE;
00970	
01010		CLOSE(CHAN4);
01020	OPEN(CHAN4,"DSK",'10,10,0,0,0,EOF);
01030	LOOKUP(CHAN4,FILEI,0);
01037	IF EOF≠0 THEN DONE;
01040	ARRYIN(CHAN4,LFILE[0],'200);	⊂ Input header;
01060	SEGTOT←(LFILE[0]*6)%N;
01061	OUTSTR("File "&FILEI&" with "&CVS(SEGTOT)&" segments"&CRLF);
01065	ARRYIN(CHAN4,INDATA[0],SEGTOT*4);
01066	CLOSE(CHAN4);
01067	BPT←POINT(6,INDATA[0],-1);
01090	ZZ:	HINDEX←21; HCOUNT←HINCNT←0;
01100	
01110	FOR SEGC←1 STEP 1 UNTIL SEGTOT DO BEGIN
01120	  READ1←HEADER;
01130	  J←CVSIX(READ1);
01140	  FOR I←0 STEP 1 UNTIL 63 DO BEGIN   IF PHLIST[I]=0 THEN BEGIN
01150	    OUTSTR("Hint not identified for segment "&CVS(SEGC)&CRLF);
01155		DONE END;
01160	    IF PHLIST[I]=J THEN BEGIN HINT←H←I;TABLES[2]←HLIST[I];DONE;END;
01165	END;
01170	
01180	FOR P←0 STEP 1 UNTIL 23 DO  INDAT[P]←ILDB(BPT);
01200	ZZZZ:  SIG(P);
01220	ZZZ:	END;
01230	
01231	OUTSTR("File done.   "&CVS(HINCNT)&" hints found."&CRLF);
01233	IF EOFA≠0 THEN DONE;
01235	END "LISTREAD";
01335	TABOUT;
01370	OUTSTR("Tables saved.   "&CVS(HINCNT)&" hints found."&CRLF);
01406	
01410	END "SAY";